#!/usr/bin/env python
# -*- coding: UTF-8 -*-

class flujo_entrada:
    def siguiente_caracter(self): pass
    def avanza(self): pass
    
class fichero(flujo_entrada):
    def __init__(self, nombre_fichero):
        self.f = open(nombre_fichero, "r")
        self.avanza()
        
    def siguiente_caracter(self):
        return self.c
    
    def avanza(self):
        self.c = self.f.read(1)
        
class cadena(flujo_entrada):
    def __init__(self, cadena):
        self.s = cadena
        self.i = 0
        self.avanza()
        
    def siguiente_caracter(self):
        return self.c
    
    def avanza(self):
        if self.i < len(self.s):
            self.c = self.s[self.i]
        else:
            self.c = ""
        self.i = self.i + 1
        
if __name__ == "__main__":
    c = cadena("una cadena")
    while c.siguiente_caracter() != "":
        print "[%s]" % c.siguiente_caracter(),
        c.avanza()
    print
    
    f = fichero("flujo_entrada.py")
    for i in range(50):
        print "[%s]" % f.siguiente_caracter(),
        f.avanza()
        
